const http = require('http');
const fs = require('fs');
const path = require('path');

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
    console.log(`收到请求: ${req.method} ${req.url}`);
    
    // 设置响应头
    res.writeHead(200, {
        'Content-Type': 'text/plain; charset=utf-8',
        'Access-Control-Allow-Origin': '*'
    });
    
    // 创建可读流读取 data.txt 文件
    const filePath = path.join(__dirname, 'data.txt');
    const readableStream = fs.createReadStream(filePath, { encoding: 'utf8' });
    
    // 将文件流直接管道到 HTTP 响应
    readableStream.pipe(res);
    
    // 处理流错误
    readableStream.on('error', (err) => {
        console.error('读取文件时出错:', err);
        res.writeHead(500, { 'Content-Type': 'text/plain' });
        res.end('服务器内部错误');
    });
    
    // 处理响应错误
    res.on('error', (err) => {
        console.error('响应时出错:', err);
    });
});

// 监听 8081 端口
const PORT = 8081;
server.listen(PORT, () => {
    console.log(`服务器已启动，监听端口 ${PORT}`);
    console.log(`请在浏览器中访问: http://localhost:${PORT}`);
});

// 处理服务器错误
server.on('error', (err) => {
    if (err.code === 'EADDRINUSE') {
        console.error(`端口 ${PORT} 已被占用，请尝试其他端口`);
    } else {
        console.error('服务器错误:', err);
    }
});

// 关闭
process.on('SIGINT', () => {
    console.log('\n正在关闭服务器...');
    server.close(() => {
        console.log('服务器已关闭');
        process.exit(0);
    });
});